package ar.com.seminario.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import ar.com.seminario.common.persistence.dao.GenericDao;
import ar.com.seminario.common.persistence.exception.DaoException;
import ar.com.seminario.common.service.definition.BaseService;
import ar.com.seminario.common.service.exception.ServiceException;
import ar.com.seminario.dao.OficinaDao;
import ar.com.seminario.model.Oficina;

/**
 * Servicio de acceso a los {@link Oficina}.
 * 
 * @author Pablo Lamas.
 * 
 */
@Service
@Transactional
public class OficinaService extends BaseService implements IOficinaService {

	public List<Oficina> getAllOficinas() throws ServiceException {

		List<Oficina> puestos = new ArrayList<Oficina>();

		try {

			final GenericDao<Oficina, Long> dao = this.getDaoFactory().newDao();
			puestos = dao.getAll(Oficina.class);

		} catch (DaoException e) {
			throw new ServiceException(e);
		}

		return puestos;
	}

	public Oficina getOficinaPorCodigo(String codigo) throws ServiceException {
	
		if (codigo == null) {
			throw new IllegalArgumentException("El parametro codigo es requerido.");
		}
		try {

			OficinaDao dao = this.getDaoFactory().newDao(OficinaDao.class);
			return (Oficina) dao.getOficinaPorCodigo(codigo);

		} catch (final DaoException e) {
			throw new ServiceException(e);
		}
	}
	
}
